// 消息类型定义
export interface Message {
  id: string;
  type: 'text' | 'audio' | 'image' | 'video';
  content: string;
  sender: 'user' | 'ai';
  timestamp: number;
  status: 'sending' | 'streaming' | 'completed' | 'failed' | 'playing' | 'Unread' | 'Read' | 'Success' | 'Failure';
  sessionId?: string;
  
  // 流式消息特有字段
  isStreaming?: boolean;
  audioChunks?: string[];
  currentChunkId?: number;
  
  // 音频相关的新属性
  duration?: number; // 音频时长（秒）
  isPlaying?: boolean; // 是否正在播放
  receivedAt?: number; // AI消息接收时间
  audioData?: string; // 音频的base64数据，存储在消息中
  canPlay?: boolean; // 移动端专用：是否可以播放（显示播放按钮）
  isAudioPreloaded?: boolean; // 新增：标记音频是否已预加载完成
  
  // 初始问候相关属性
  imageUrl?: string; // 图片URL，用于初始问候展示图片
  
  // 图片生成相关属性
  isImageGenerating?: boolean;  // 标记是否正在生成图片
  loadingText?: string;         // 图片生成加载状态提示文本
  taskId?: string;              // 图片生成任务ID
}

// 聊天历史存储结构
export interface ChatHistory {
  messages: Message[];
  sessionId?: string;
}

// SSE消息类型
export interface SSETextData {
  text: string;
  done: boolean;
  session_id: string;
}

export interface SSEAudioData {
  audio: {
    data: {
      audio?: string; // hex字符串
      chunk_id?: number;
      is_chunk: boolean;
      text_source?: string;
      status?: string; // 音频完成状态
    };
  };
  done: boolean;
  session_id: string;
  status?: string;
}

// API请求参数
export interface SendMessageParams {
  messages: Array<{ role: string; content: string }>;
  stream: boolean;
  generate_voice: boolean;
  session_id?: string;
  chatId: string;
  language: string;
} 